//package com.zmn.plat.dubbo.impl.category;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import javax.annotation.Resource;
//
//import lombok.extern.slf4j.Slf4j;
//import org.apache.dubbo.config.annotation.Service;
//import org.springframework.cache.annotation.Cacheable;
//import org.springframework.util.CollectionUtils;
//
//import com.zmn.common.constant.GlobalConsts;
//import com.zmn.common.dto.VtDTO;
//import com.zmn.common.dto2.ResponseDTO;
//import com.zmn.common.utils.number.NumberUtil;
//import com.zmn.manager.common.database.annotation.ReadOnlyConnection;
//import com.zmn.plat.business.interfaces.category.BaseCategoryAttributeBService;
//import com.zmn.plat.common.dto.category.CategoryAttributeDRO;
//import com.zmn.plat.dubbo.interfaces.category.BaseCategoryAttributeListRemoteService;
//import com.zmn.plat.dubbo.utils.DubboConsts;
//import com.zmn.plat.model.dto.BaseCategoryAttributeDTO;
//import com.zmn.plat.model.entity.category.BaseCategoryAttribute;
//import com.zmn.plat.model.entity.category.BaseCategoryAttributeEnum;
//import com.zmn.plat.services.interfaces.category.BaseCategoryAttributeEnumService;
//import com.zmn.plat.services.interfaces.category.BaseCategoryAttributeService;
//
///**
// * @author duanzuocai
// * @version v1.0
// * @since 2018/10/19 20:43
// */
//@Slf4j
//@Service(version = DubboConsts.INTERFACE_VERSION, validation = "true")
//public class BaseCategoryAttributeListRemoteServiceImpl implements BaseCategoryAttributeListRemoteService {
//
//    @Resource
//    BaseCategoryAttributeBService attributeBService;
//    @Resource
//    BaseCategoryAttributeService attributeService;
//    @Resource
//    BaseCategoryAttributeEnumService enumService;
//
//    @Override
//    @ReadOnlyConnection
//    @Cacheable(key = "'dubbo:list:categ:attr:enum:categ:'+#p0", cacheNames = "redis1h")
//    public ResponseDTO<List<CategoryAttributeDRO<VtDTO>>> listAttrAndEnumByCategoryId(Integer categoryId) {
//        log.info("BaseCategoryAttributeListRemoteServiceImpl.listAttrAndEnumByCategoryId 参数：categoryId：{}", categoryId);
//        List<CategoryAttributeDRO<VtDTO>> attrs = this.getAttrAndEnumByCategyId(categoryId);
//
//        return ResponseDTO.success(attrs, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    @Cacheable(key = "'dubbo:list:categ:attr:enum:categ:'+#p1+'categone:'+#p0", cacheNames = "redis1h")
//    public ResponseDTO<List<CategoryAttributeDRO<VtDTO>>> listAttrAndEnumByCategoryId(Integer categOneId, Integer catergId) {
//        log.info("BaseCategoryAttributeListRemoteServiceImpl.listAttrAndEnumByCategoryId 参数：categOneId：{}，catergId：{}", categOneId, catergId);
//        if (NumberUtil.isNullOrZero(categOneId) || NumberUtil.isNullOrZero(catergId)) {
//            return ResponseDTO.fail("传入参数不能为空");
//        }
//        List<CategoryAttributeDRO<VtDTO>> attrOnes = this.getAttrAndEnumByCategyId(categOneId);
//        List<CategoryAttributeDRO<VtDTO>> attrs = this.getAttrAndEnumByCategyId(catergId);
//        attrOnes.addAll(attrs);
//
//        return ResponseDTO.success(attrOnes, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @ReadOnlyConnection
//    private List<CategoryAttributeDRO<VtDTO>> getAttrAndEnumByCategyId(Integer catergId) {
//        List<BaseCategoryAttributeDTO> list = attributeBService.getAttrAndEnumByCategoryId(catergId);
//
//        List<CategoryAttributeDRO<VtDTO>> attrs = new ArrayList<>();
//
//        for (BaseCategoryAttributeDTO dto : list) {
//            CategoryAttributeDRO<VtDTO> dro = new CategoryAttributeDRO<VtDTO>();
//            dro.setAttrId(dto.getAttrId());
//            dro.setName(dto.getName());
//            dro.setSort(dto.getSort());
//            dro.setStatus(dto.getStatus());
//
//            List<BaseCategoryAttributeEnum> enums = dto.getAttributeEnums();
//            if (CollectionUtils.isEmpty(enums)) {
//                continue;
//            }
//            List<VtDTO> vts = new ArrayList<>();
//            for (BaseCategoryAttributeEnum en : enums) {
//                VtDTO vt = new VtDTO(en.getEnumId(), en.getEnumValue());
//                vts.add(vt);
//            }
//            dro.setValues(vts);
//            attrs.add(dro);
//        }
//
//        return attrs;
//    }
//
//    @Override
//    @ReadOnlyConnection
//    @Cacheable(key = "'dubbo:list:categ:attr:categ'+#p0", cacheNames = "redis1h")
//    public ResponseDTO<List<VtDTO>> listAttributeVtByCategoryId(Integer categId) {
//        log.info("BaseCategoryAttributeListRemoteServiceImpl.listAttributeVtByCategoryId 参数categId：{}", categId);
//        List<BaseCategoryAttribute> attrs = attributeService.listByCategoryId(categId, null);
//        List<VtDTO> dtos = new ArrayList<>();
//
//        attrs.forEach(attr -> {
//            VtDTO dto = new VtDTO(attr.getAttrId(), attr.getName());
//            dtos.add(dto);
//        });
//
//        return ResponseDTO.success(dtos, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @Override
//    @ReadOnlyConnection
//    @Cacheable(key = "'dubbo:list:categ:values:attr'+#p0", cacheNames = "redis1h")
//    public ResponseDTO<List<VtDTO>> listAttributeValueVtByAttributeId(Integer attributeId) {
//        log.info("BaseCategoryAttributeListRemoteServiceImpl.listAttributeValueVtByAttributeId 参数attributeId：{}", attributeId);
//        List<BaseCategoryAttributeEnum> enums = enumService.listAttributeId(attributeId);
//        List<VtDTO> dtos = new ArrayList<>();
//
//        enums.forEach(e -> {
//            VtDTO dto = new VtDTO(e.getEnumId(), e.getEnumValue());
//            dtos.add(dto);
//        });
//
//        return ResponseDTO.success(dtos, GlobalConsts.SUCCESS_MSG);
//    }
//}
